#include <iostream>
using namespace std;
struct data{
	int v1;
	int v2;
};
data result[10001];
int num_result=0;


int handle(int num1,int num2);
int main()
{
	int n;
	while(cin>>n){
		int x;
		int y;
		for(int i=0;i<n;i++){
			cin>>x>>y;
			result[num_result].v1=handle(x,y);
			result[num_result].v2=x*y/handle(x,y);
			num_result++;
		}
		for(int j=0;j<n;j++){
			cout<<result[j].v1<<" "<<result[j].v2<<endl;
		}
		num_result=0;
	}
}

int handle(int num1,int num2)
{
	int d1,d2,d3=1;
	if(num1<=num2){
		d1=num1;
		d2=num2;
	}
	else{
		d1=num2;
		d2=num1;
	}
	while(d3!=0){
		d3=d2%d1;
		d2=d1;
		d1=d3;
	}
	return d2;
}
